package com.ttbj.salesman.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.ttbj.api.dto.Page;
import com.ttbj.api.dto.Salesman2;
import com.ttbj.salesman.bean.po.Salesman;


public interface SalesmanMapper {
	
	/**
	 * 通过用户名和是否删除查询用户
	 * @param userName 用户名
	 * @param isDelete 是否删除
	 * @return 用户详细信息
	 */
	Salesman selectSalesmanByName(@Param("username") String userName, @Param("isdelete") Integer isDelete);
	
	/**
     * 根据用户ID查询用户信息
     * @param salesmanId 用户ID 
     * @return 用户详细信息
     */
	Salesman querySalesmanById(@Param("salesmanId") Long salesmanId);
	
	/**
     * 分页查询所有用户
     * @param page 分页条件
     * @param salesman 用户
     * @return 用户集合
     */
    List<Salesman> queryAllSalesmanByPage(@Param("page") Page page, @Param("salesman") Salesman salesman);
    
    /**
     * 统计用户记录条数
     * @param salesman 用户
     * @return
     */
    Integer queryAllSalesmanByPageCount(@Param("salesman") Salesman salesman);
    
    /**
     * 根据ID禁用用户
     * @param salesmanId 用户id
     * @param isDelete 删除标识符
     */
    void deleteSalesmanById(@Param("salesmanId") Long salesmanId, @Param("isDelete") Integer isDelete);
    
    /**
     * 新增用户
     * @param salesman 用信息
     */
    void insertSalesman(Salesman salesman);
    
    /**
     * 更新用户
     * @param salesman 用户
     */
    void updateSalesmanById(Salesman salesman);
    
    /**
     * 通过角色ID查询是否有用户
     * @param roleId
     * @return 数量
     */
    Integer querySalesmanByRoleId(Long roleId);
    
    /**
     * 通过用户名查询是否有用户
     * @param salesmanName
     * @return 数量
     */
    Integer querySalesmanCountByName(String salesmanName);
    
    /**
     * 通过公司编号查询是否存在用户
     * @param companyNum 公司编号
     * @return 数量
     */
    Integer querySalesmanCountByComnum(String companyNum);
    
    /**
     * 通过业务员(仓储员)id查询业务员部分信息
     * @param salesmanId 业务员id
     * @return
     */
    Salesman querySalesmanPartInfoById(@Param("salesmanId") Long salesmanId);
	
    /**
     * 修改密码
     * @param salesmanPwd 新密码
     * @param salesmanId 用户id
     * @return
     */
    int updateSalesmanPwd(@Param("salesmanPwd") String salesmanPwd, @Param("salesmanId") Long salesmanId);
    
    /**
     * 查询某一段id内的用户名，用于设置密码
     * @param sId 开始id
     * @param eId 结束id
     * @return
     */
    List<Salesman2> queryIdAndNameById(@Param("sId") Long sId, @Param("eId") Long eId);
    
    /**
     * 查询未删除的开单人员的id，名字和分站点名
     * @param salesmanIsDel 是否删除：1：未删除 0：删除
     * @param salesmanType 业务员类型：1：业务员
     * @return
     */
    List<Salesman> querySalesmanIdNameCompany(@Param("salesmanIsDel") Integer salesmanIsDel, @Param("salesmanType") Integer salesmanType);
}
